home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet multimedia / Animacje, filmy i prezentacje / Edytory i konwertery filmow / MediaCoder 0.5.1 pre12 / MediaCoder-0.5.1-pre12.exe / htdocs / pref / tree_view.js < prev    next >
Text File  |  2006-06-28  |  8KB  |  259 lines

  1. // JavaScript Document
  2. // <script language="JavaScript1.2" type="text/JavaScript">
  3. // Copyright (c)2005 Rewritten Software.  http://www.rewrittensoftware.com
  4. // This script is supplied "as is" witrhout any form of warranty. Rewritten Software 
  5. // shall not be liable for any loss or damage to person or property as a result of using this script.
  6. // Use this script at your own risk!
  7. // You are licensed to use this script free of charge for commercial or non-commercial use providing you do not remove 
  8. // the copyright notice or disclaimer.
  9.  
  10. // Define the array that will contain the mapping table for ids to images.
  11. var iconMap = new Array();
  12. var iconList = new Array( iconMap );
  13.  
  14. function Toggle(item)
  15. {
  16.     var idx = -1;
  17.     for( i = 0; i < iconList.length; i++ )
  18.     {
  19.         if( iconList[i][0] == item )
  20.         {
  21.             idx = i;
  22.             break;
  23.         }
  24.     }
  25.     
  26.     if( idx < 0 )
  27.         alert( "Could not find key in Icon List." );
  28.            
  29.     var div=document.getElementById("D"+item);
  30.     var visible=(div.style.display!="none");
  31.     var key=document.getElementById("P"+item);
  32.     
  33.     
  34.     // Check if the item clicked has any children. If it does not then remove the plus/minus icon
  35.     // and replace it with a transaparent gif.
  36.     var removeIcon = div.hasChildNodes() == false;
  37.     
  38.     if( key != null )
  39.     {
  40.         if( !removeIcon )
  41.         {
  42.             if (visible)
  43.             {
  44.                  div.style.display="none";
  45.                  key.innerHTML="<img src='img/plus.png' width='16' height='16' hspace='0' vspace='0' border='0'>";
  46.             }
  47.             else
  48.             {
  49.                   div.style.display="block";
  50.                 key.innerHTML="<img src='img/minus.png' width='16' height='16' hspace='0' vspace='0' border='0'>";
  51.             }
  52.         }
  53.         else
  54.             key.innerHTML="<img src='img/transparent.png' width='16' height='16' hspace='0' vspace='0' border='0'>";
  55.     }
  56.  
  57.     // Toggle the icon for the tree item
  58.     key=document.getElementById("I"+item);
  59.     if( key != null )
  60.     {
  61.         if (visible)
  62.         {
  63.              div.style.display="none";
  64.              key.innerHTML="<img src='"+iconList[idx][1]+"' width='16' height='16' hspace='0' vspace='0' border='0'>";
  65.         }
  66.         else
  67.         {
  68.               div.style.display="block";
  69.             key.innerHTML="<img src='"+iconList[idx][2]+"' width='16' height='16' hspace='0' vspace='0' border='0'>";
  70.         }
  71.     }    
  72. }
  73.  
  74. function Expand() {
  75.    divs=document.getElementsByTagName("DIV");
  76.    for (i=0;i<divs.length;i++) {
  77.      divs[i].style.display="block";
  78.      key=document.getElementById("x" + divs[i].id);
  79.      key.innerHTML="<img src='img/textfolder.png' width='16' height='16' hspace='0' vspace='0' border='0'>";
  80.    }
  81. }
  82.  
  83. function Collapse() {
  84.    divs=document.getElementsByTagName("DIV");
  85.    for (i=0;i<divs.length;i++) {
  86.      divs[i].style.display="none";
  87.      key=document.getElementById("x" + divs[i].id);
  88.      key.innerHTML="<img src='img/folder.png' width='16' height='16' hspace='0' vspace='0' border='0'>";
  89.    }
  90. }
  91.  
  92. function AddImage( parent, imgFileName )
  93. {
  94.     img=document.createElement("IMG");
  95.     img.setAttribute( "src", imgFileName );
  96.     img.setAttribute( "width", 16 );
  97.     img.setAttribute( "height", 16 );
  98.     img.setAttribute( "hspace", 0 );
  99.     img.setAttribute( "vspace", 0 );
  100.     img.setAttribute( "border", 0 );
  101.     parent.appendChild(img);
  102. }
  103.  
  104. function CreateUniqueTagName( seed )
  105. {
  106.     var tagName = seed;
  107.     var attempt = 0;
  108.     
  109.     if( tagName == "" || tagName == null )
  110.         tagName = "x";
  111.  
  112.     while( document.getElementById(tagName) != null )
  113.     {
  114.         tagName = "x" + tagName;
  115.         if( attempt++ > 50 )
  116.         {
  117.             alert( "Cannot create unique tag name. Giving up. \nTag = " + tagName );
  118.             break;
  119.         }
  120.     }
  121.     
  122.     return tagName;
  123. }
  124.  
  125. // Creates a new package under a parent. 
  126. // Returns a TABLE tag to place child elements under.
  127. function CreateTreeItem( parent, img1FileName, img2FileName, nodeName, url, target, mouseover)
  128. {
  129.     var hasChild = (url == null);
  130.     var uniqueId = CreateUniqueTagName( nodeName );
  131.     if (!target) target = "_blank";
  132.     for( i=0; i < iconList.length; i++ )
  133.         if( iconList[i][0] == uniqueId )
  134.         {
  135.             alert( "Non unique ID in Element Map. '" + uniqueId + "'" );
  136.             // return;
  137.         }
  138.     iconList[iconList.length] = new Array( uniqueId, img1FileName, img2FileName );
  139.  
  140.     table = document.createElement("TABLE");
  141.     if( parent != null )
  142.         parent.appendChild( table );
  143.  
  144.     table.setAttribute( "border", 0 );
  145.     table.setAttribute( "cellpadding", 1 );
  146.     table.setAttribute( "cellspacing", 1 );
  147.         
  148.     tablebody = document.createElement("TBODY");
  149.     table.appendChild(tablebody);
  150.         
  151.        row=document.createElement("TR");
  152.     tablebody.appendChild( row );
  153.  
  154.     // Create the cell for the plus and minus.
  155.     cell=document.createElement("TD");
  156.     cell.setAttribute( "width", 16 );
  157.     row.appendChild(cell);
  158.     
  159.         // Create the hyperlink for plus/minus the cell
  160.     a=document.createElement("A");
  161.     cell.appendChild( a );
  162.     a.setAttribute( "id", "P"+uniqueId );
  163.     a.setAttribute( "href", "javascript:Toggle(\""+uniqueId+"\");" );
  164.     if (hasChild)
  165.         AddImage( a, "img/plus.png" );
  166.     
  167.     // Create the cell for the image.
  168.     cell=document.createElement("TD");
  169.     cell.setAttribute( "width", 16 );
  170.     row.appendChild(cell);
  171.         
  172.     // all the event to call when the icon is clicked.
  173.     a=document.createElement("A");
  174.     a.setAttribute( "id", "I"+uniqueId );
  175.     if( hasChild ) {
  176.         a.setAttribute( "href", "javascript:Toggle(\""+uniqueId+"\");" );
  177.     } else {
  178.         a.setAttribute( "href", url );
  179.         a.setAttribute( "target", target);
  180.     }
  181.     cell.appendChild(a);
  182.  
  183.     // Add the image to the cell
  184.     AddImage( a, img1FileName );
  185.  
  186.     // Create the cell for the text
  187.     cell=document.createElement("TD");
  188.     cell.noWrap = true;
  189.     a=document.createElement("A");
  190.     a.setAttribute( "id", uniqueId );
  191.     a.setAttribute( "class", "nodeview");
  192.     if (mouseover) {
  193.         a.setAttribute("onMouseOver", mouseover);
  194.     }
  195.     if( url != null ) {
  196.         a.setAttribute( "href", url );
  197.         a.setAttribute( "target", target);
  198.     } else {
  199.         a.setAttribute( "href", "javascript:Toggle(\""+uniqueId+"\");" );
  200.     }
  201.     cell.appendChild( a );
  202.     text=document.createTextNode( nodeName );
  203.     a.appendChild(text);
  204.  
  205.     row.appendChild(cell);
  206.  
  207.     return CreateDiv( parent, uniqueId );;
  208. }
  209.  
  210. // Creates a new DIV tag and appends it to parent if parent is not null.
  211. // Returns the new DIV tag.
  212. function CreateDiv( parent, id )
  213. {
  214.     div=document.createElement("DIV");
  215.     if( parent != null )
  216.         parent.appendChild( div );
  217.         
  218.     div.setAttribute( "id", "D"+id );
  219.     div.style.display  = "none";
  220.      div.style.marginLeft = "2em";
  221.     
  222.     return div;
  223. }
  224.  
  225. // This is the root of the tree. It must be supplied as the parent for anything at the top level of the tree.
  226. var rootCell = null;
  227.  
  228. // This is the entry method into the Tree View. It builds an initial single row, single cell table tat will 
  229. // contain the tree. It initialises a global object "rootCell". This object must be used as the parent for all 
  230. // top-level tree elements.
  231. // There are two methods for creating tree elements: CreatePackage() and CreateNode(). The images for the 
  232. // package are hard coded. CreateNode() allows you to supply your own image for each node element.
  233. function Initialise(container)
  234. {
  235.     body = document.getElementById(container);
  236.     body.setAttribute( "leftmargin", 2 );
  237.     body.setAttribute( "topmargin", 0 );
  238.     body.setAttribute( "marginwidth", 0 );
  239.     body.setAttribute( "marginheight", 0 );
  240.     
  241.     table = document.createElement("TABLE");
  242.     body.appendChild( table );
  243.  
  244.     table.setAttribute( "border", 0 );
  245.     table.setAttribute( "cellpadding", 1 );
  246.     table.setAttribute( "cellspacing", 1 );
  247.         
  248.     tablebody = document.createElement("TBODY");
  249.     table.appendChild(tablebody);
  250.         
  251.     row=document.createElement("TR");
  252.     tablebody.appendChild(row);
  253.         
  254.     cell=document.createElement("TD");
  255.     row.appendChild(cell);     
  256.     
  257.     rootCell = cell;    // Initialise the root of the tree view.
  258. }
  259.